// // ! function() {
// //     var t = window.cc;
// //     t.log("k-cocos v0.1"), t.director._kSpeed = 1;
// //     var i = t.Director.prototype.calculateDeltaTime;
// //     t.director.calculateDeltaTime = function(e) {
// //         i.call(this, e), this._deltaTime *= this._kSpeed;
// //     }, t.kSpeed = function(e) {
// //         t.director._kSpeed = e;
// //     }, t.kGetSpeed = function() {
// //         return t.director._kSpeed;
// //     }, t.kMultTouch = function(e) {
// //         t.internal && t.internal.inputManager ? t.internal.inputManager._maxTouches = e : (_cc && _cc.inputManager && (_cc.inputManager._maxTouches = e),
// //             CC_QQPLAY && BK && BK.inputManager && (BK.inputManager._maxTouches = e));
// //     }, t.kSimpleMove = t.Class({
// //         name: "cc_kSimpleMove",
// //         extends: t.Component,
// //         properties: {
// //             speed_x: 0,
// //             speed_y: 0,
// //             accelerate_x: 0,
// //             accelerate_y: 0,
// //             hasAim: !1,
// //             aimPos_x: 0,
// //             aimPos_y: 0
// //         },
// //         editor: {
// //             executionOrder: 9999
// //         },
// //         getMoveSpeed: function() {
// //             return new t.Vec2(this.speed_x, this.speed_y);
// //         },
// //         setMoveSpeed: function(t, i) {
// //             t && "object" == typeof(t) ? (this.speed_x = t.x || 0, this.speed_y = t.y || 0) : (this.speed_x = t || 0,
// //                 this.speed_y = i || 0);
// //         },
// //         getAccelerate: function() {
// //             return new t.Vec2(this.accelerate_x, this.accelerate_y);
// //         },
// //         setAccelerate: function(t, i) {
// //             t && "object" == typeof(t) ? (this.accelerate_x = t.x || 0, this.accelerate_y = t.y || 0) : (this.accelerate_x = t || 0,
// //                 this.accelerate_y = i || 0);
// //         },
// //         setDestination: function(e, t, i) {
// //             this.aimPos_x = e.x || 0, this.aimPos_y = e.y || 0, t = t || 0, i = i || 0;
// //             var s = this.aimPos_x - this.node.x,
// //                 n = this.aimPos_y - this.node.y,
// //                 a = Math.sqrt(s * s + n * n),
// //                 o = s / a,
// //                 c = n / a;
// //             this.setMoveSpeed(t * o, t * c), this.setAccelerate(i * o, i * c), this.hasAim = !0;
// //         },
// //         update: function(e) {
// //             if (this.speed_x += this.accelerate_x, this.speed_y += this.accelerate_y, this.hasAim) {
// //                 var t = this.aimPos_x > this.node.x ? 1 : -1,
// //                     i = this.aimPos_y > this.node.y ? 1 : -1;
// //                 this.node.x += this.speed_x * e, this.node.y += this.speed_y * e;
// //                 var s = this.aimPos_x > this.node.x ? 1 : -1,
// //                     n = this.aimPos_y > this.node.y ? 1 : -1;
// //                 (t * s < 0 || i * n < 0) && (this.hasAim = !1, this.node.x = this.aimPos_x, this.node.y = this.aimPos_y,
// //                     this.setAccelerate(0, 0), this.setMoveSpeed(0, 0));
// //             } else this.node.x += this.speed_x * e, this.node.y += this.speed_y * e;
// //         }
// //     }), t.kNode = function(e) {
// //         return e.kTag = 0, e.kInfo = "init", e._kState = "init", Object.defineProperties(e, {
// //             kState: {
// //                 get: function() {
// //                     return this._kState;
// //                 },
// //                 set: function(e) {
// //                     var t = this._kState;
// //                     this._kState = e, this.kStateCb && this.kStateCb(e, t);
// //                 }
// //             },
// //             kComponents: {
// //                 get: function() {
// //                     return this._components;
// //                 },
// //                 set: function(e) {
// //                     t.error("can not set kComponents, please use addComponent()");
// //                 }
// //             },
// //             kFirstChild: {
// //                 get: function() {
// //                     return this.children[0];
// //                 },
// //                 set: function(e) {
// //                     t.error("can not set kFirstChild, please use addChild()");
// //                 }
// //             },
// //             kSecondChild: {
// //                 get: function() {
// //                     return this.children[1];
// //                 },
// //                 set: function(e) {
// //                     t.error("can not set kSecondChild, please use addChild()");
// //                 }
// //             },
// //             kThirdChild: {
// //                 get: function() {
// //                     return this.children[2];
// //                 },
// //                 set: function(e) {
// //                     t.error("can not set kThirdChild, please use addChild()");
// //                 }
// //             },
// //             kLastChild: {
// //                 get: function() {
// //                     return this.children[this.childrenCount - 1];
// //                 },
// //                 set: function(e) {
// //                     t.error("can not set kFirstChild, please use addChild()");
// //                 }
// //             }
// //         }), e.kHitTest = function(e) {
// //             this._hitTest = e;
// //         }, e;
// //     };
// // }();


// (function() {
//     const cc = window.cc;

//     cc.director._kSpeed = 1;

//     // 保留原始的 calculateDeltaTime 方法
//     const originalCalculateDeltaTime = cc.Director.prototype.calculateDeltaTime;

//     // 重写 calculateDeltaTime 方法以支持动态速度调整
//     cc.director.calculateDeltaTime = function(deltaTime) {
//         originalCalculateDeltaTime.call(this, deltaTime);
//         this._deltaTime *= this._kSpeed;
//     };

//     /**
//      * 设置全局速度
//      * @param {number} speed 新的速度值
//      */
//     cc.kSpeed = function(speed) {
//         cc.director._kSpeed = speed;
//     };

//     /**
//      * 获取当前全局速度
//      * @returns {number} 当前速度值
//      */
//     cc.kGetSpeed = function() {
//         return cc.director._kSpeed;
//     };

//     /**
//      * 设置多点触控支持的最大触点数
//      * @param {number} maxTouches 最大触点数
//      */
//     cc.kMultTouch = function(maxTouches) {
//         if (cc.internal && cc.internal.inputManager) {
//             cc.internal.inputManager._maxTouches = maxTouches;
//         } else if (_cc && _cc.inputManager) {
//             _cc.inputManager._maxTouches = maxTouches;
//         } else if (CC_QQPLAY && BK && BK.inputManager) {
//             BK.inputManager._maxTouches = maxTouches;
//         }
//     };

//     /**
//      * @class cc_kSimpleMove
//      * @description 简单移动组件，用于处理节点的加速和目标移动逻辑
//      */
//     cc.kSimpleMove = cc.Class({
//         name: "cc_kSimpleMove",
//         extends: cc.Component,

//         properties: {
//             speed_x: { default: 0, type: cc.Float, tooltip: "X轴速度" },
//             speed_y: { default: 0, type: cc.Float, tooltip: "Y轴速度" },
//             accelerate_x: { default: 0, type: cc.Float, tooltip: "X轴加速度" },
//             accelerate_y: { default: 0, type: cc.Float, tooltip: "Y轴加速度" },
//             hasAim: { default: false, tooltip: "是否有目标点" },
//             aimPos_x: { default: 0, type: cc.Float, tooltip: "目标点X坐标" },
//             aimPos_y: { default: 0, type: cc.Float, tooltip: "目标点Y坐标" }
//         },

//         editor: {
//             executionOrder: 9999
//         },

//         /**
//          * 获取当前移动速度
//          * @returns {cc.Vec2} 当前速度向量
//          */
//         getMoveSpeed() {
//             return new cc.Vec2(this.speed_x, this.speed_y);
//         },

//         /**
//          * 设置移动速度
//          * @param {cc.Vec2|number} xOrVec2 X轴速度或速度向量
//          * @param {number} [y] Y轴速度
//          */
//         setMoveSpeed(xOrVec2, y) {
//             if (xOrVec2 && typeof xOrVec2 === "object") {
//                 this.speed_x = xOrVec2.x || 0;
//                 this.speed_y = xOrVec2.y || 0;
//             } else {
//                 this.speed_x = xOrVec2 || 0;
//                 this.speed_y = y || 0;
//             }
//         },

//         /**
//          * 获取当前加速度
//          * @returns {cc.Vec2} 当前加速度向量
//          */
//         getAccelerate() {
//             return new cc.Vec2(this.accelerate_x, this.accelerate_y);
//         },

//         /**
//          * 设置加速度
//          * @param {cc.Vec2|number} xOrVec2 X轴加速度或加速度向量
//          * @param {number} [y] Y轴加速度
//          */
//         setAccelerate(xOrVec2, y) {
//             if (xOrVec2 && typeof xOrVec2 === "object") {
//                 this.accelerate_x = xOrVec2.x || 0;
//                 this.accelerate_y = xOrVec2.y || 0;
//             } else {
//                 this.accelerate_x = xOrVec2 || 0;
//                 this.accelerate_y = y || 0;
//             }
//         },

//         /**
//          * 设置目标点和初始速度、加速度
//          * @param {cc.Vec2} position 目标点坐标
//          * @param {number} initialSpeed 初始速度
//          * @param {number} acceleration 加速度
//          */
//         setDestination(position, initialSpeed = 0, acceleration = 0) {
//             this.aimPos_x = position.x || 0;
//             this.aimPos_y = position.y || 0;

//             const deltaX = this.aimPos_x - this.node.x;
//             const deltaY = this.aimPos_y - this.node.y;
//             const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
//             const normalizedX = deltaX / distance;
//             const normalizedY = deltaY / distance;

//             this.setMoveSpeed(initialSpeed * normalizedX, initialSpeed * normalizedY);
//             this.setAccelerate(acceleration * normalizedX, acceleration * normalizedY);

//             this.hasAim = true;
//         },

//         /**
//          * 每帧更新移动逻辑
//          * @param {number} deltaTime 距离上一帧的时间间隔
//          */
//         update(deltaTime) {
//             this.speed_x += this.accelerate_x;
//             this.speed_y += this.accelerate_y;

//             if (this.hasAim) {
//                 const prevDirectionX = this.aimPos_x > this.node.x ? 1 : -1;
//                 const prevDirectionY = this.aimPos_y > this.node.y ? 1 : -1;

//                 this.node.x += this.speed_x * deltaTime;
//                 this.node.y += this.speed_y * deltaTime;

//                 const currentDirectionX = this.aimPos_x > this.node.x ? 1 : -1;
//                 const currentDirectionY = this.aimPos_y > this.node.y ? 1 : -1;

//                 if (prevDirectionX * currentDirectionX < 0 || prevDirectionY * currentDirectionY < 0) {
//                     this.hasAim = false;
//                     this.node.x = this.aimPos_x;
//                     this.node.y = this.aimPos_y;
//                     this.setAccelerate(0, 0);
//                     this.setMoveSpeed(0, 0);
//                 }
//             } else {
//                 this.node.x += this.speed_x * deltaTime;
//                 this.node.y += this.speed_y * deltaTime;
//             }
//         }
//     });

//     /**
//      * 为节点添加 kNode 的扩展功能
//      * @param {cc.Node} node 目标节点
//      * @returns {cc.Node} 扩展后的节点
//      */
//     cc.kNode = function(node) {
//         node.kTag = 0;
//         node.kInfo = "init";
//         node._kState = "init";

//         Object.defineProperties(node, {
//             kState: {
//                 get() {
//                     return this._kState;
//                 },
//                 set(newState) {
//                     const oldState = this._kState;
//                     this._kState = newState;
//                     if (this.kStateCb) {
//                         this.kStateCb(newState, oldState);
//                     }
//                 }
//             },
//             kComponents: {
//                 get() {
//                     return this._components;
//                 },
//                 set() {
//                     cc.error("Cannot set kComponents, please use addComponent().");
//                 }
//             },
//             kFirstChild: {
//                 get() {
//                     return this.children[0];
//                 },
//                 set() {
//                     cc.error("Cannot set kFirstChild, please use addChild().");
//                 }
//             },
//             kSecondChild: {
//                 get() {
//                     return this.children[1];
//                 },
//                 set() {
//                     cc.error("Cannot set kSecondChild, please use addChild().");
//                 }
//             },
//             kThirdChild: {
//                 get() {
//                     return this.children[2];
//                 },
//                 set() {
//                     cc.error("Cannot set kThirdChild, please use addChild().");
//                 }
//             },
//             kLastChild: {
//                 get() {
//                     return this.children[this.childrenCount - 1];
//                 },
//                 set() {
//                     cc.error("Cannot set kLastChild, please use addChild().");
//                 }
//             }
//         });

//         /**
//          * 设置节点的点击检测方法
//          * @param {Function} hitTestFunction 点击检测函数
//          */
//         node.kHitTest = function(hitTestFunction) {
//             this._hitTest = hitTestFunction;
//         };

//         return node;
//     };
// })();
